Distributed computing environments, or computer networks, are designed to give computer system users the ability to send and receive information to other computer system users, and to obtain access to data sources and program applications on the computer network.
The utilization of computer networks has increased exponentially over the past decade such that current computer system architectures and technologies are unable to handle the increase. Not surprisingly, as the utilization of computer networks increases, the need for more reliable and more efficient computer network management also increases.
A computer network consists of two or more computer systems that are connected together so that they can transfer information between the computer systems. The computer systems on a computer network may be inter-connected to communicate with each other using a local or wide area network utilizing a variety of network communication techniques. The details and operation of such networks and communication technologies are well known to those skilled in the art.
There are two main types of computer networks, namely "intranets" and "internets." An intranet is a private computer network, such as for a company or organization, that allows information to be transferred between the computer systems connected to the private network. The data sources and program applications of the intranet are generally not available to computer systems outside of the private network. In contrast, an "internet" is a computer network in which information is transferred between computer systems connected to different computer networks. A capitalized use of the term internet, or "Internet," refers to the world-wide collection of inter-connected computer networks that use the TCP/IP communication protocols to transfer information. The term TCP/IP means "Transmission Control Protocol/Internet Protocol," and refers to a defined set of protocols for communication between computer systems and computer networks.
Client-Server Systems
Most computer networks are designed around the "client-server" methodology. FIG. 1 illustrates a basic client-server computer network configuration. In FIG. 1, a "client" computer system 10 is connected to a communication network 12 and may communicate with a "server" computer system 14 on network 12. Server computer system 14 acts as a central computer system allowing access to local data sources 16-22, such as databases or applications, residing on server computer system 14 or across network 12. The term "local data source" refers generally to any data source or program application residing on server computer system 14 or any remote data source or program application across network 12 that is accessible to server computer system 14 using any available interface.
As shown in FIG. 1, server computer system 14 may handle information requests from a multiple of client computer systems 10, 24, 26, 28 connected to network 12. Server computer system 14 is generally referred to a "server" because it services the information requests of the "client" computer systems. In addition, program applications executing on server computer system 14 may also act as "clients" to other network server computer systems (not shown) implementing database applications or other legacy systems creating a multi-tier client-server network configuration. The term "information request" refers generally to any information request or program application request that may be processed by a server computer system. In addition, the term "resource" refers generally to both hardware and software components of a computer system or computer network that are used to perform the functions of the computer system or network. Such resources include, but are not limited to data files, databases, program applications, memory space, CPU time, communication ports, or legacy systems or other computer systems accessible across a network.
Hardware Configuration
The hardware present in each of the computer systems shown in FIG. 1 may be of any conventional type such as is typically found on computers in a client-server network environment. As shown in FIG. 2, it is anticipated, however, that server computer system 14 will be equipped with some sort of central processing unit (CPU) 30, some sort of conventional input/output equipment 32, such as a keyboard and a video display monitor, some sort of conventional data storage device 34, such as a disk or tape drive or CD ROM drive, some sort of random access memory (RAM) 36, and some sort of conventional network communication hardware 38, such as an ETHERNET interface unit for physically coupling the computer system to network 12. Network 12 may be implemented using any conventional network protocol such as TCP/IP, SNA, SMB, HTTP, FTP, IIOP, or DCOM.
In server computer system 14, a server software program 40 is stored on storage device 34 and installed on the server computer system 14. The server software program 40 is responsible for handling connections and information requests from the client computer system 10. The server software 40 may provide access to a variety of local data sources 16, 18, 20, 22 present on server computer system 14. For example, the server software 40 may allow access to information databases, such as DB2, IMS, Oracle, and Sybase. Additionally, server software 40 may allow access to other network server computer systems running client-server or legacy systems.
A computer network may contain more one or more server computer systems to allow access to a variety of data sources and program applications on the network. Additionally, the term "server" may refer to a particular software program running on a computer system, in that a single server computer system could have several different server software programs installed and running on it at the same time, thus giving clients on the network access to different server programs and information resources.
The Internet
As stated above, the Internet is a world-wide collection of inter-connected computer networks that all support the TCP/IP communication protocol. The term "World Wide Web" (WWW) generally refers to the collection of computer resources on the Internet that can be accessed using a variety of information protocols, such as HTTP, FTP, Gopher, telnet, USENET, WAIS, and others. HyperText Transport Protocol, or "HTTP," is the most widely used protocol on the Internet or WWW today. As a result, the term "the Web" is often used to refer to server computer systems on the Internet that support the HTTP information protocol.
FIG. 3 is a basic network diagram illustrating the Internet or WWW. In FIG. 3, one or more client computer systems 42,44,46,48 running "web browser" programs 62 are connected to the Internet and communicate with server computer system 52 running a "web server" program 64. A "web browser" 62 is a software program installed and running on a client computer system that enables the client computer system to communicate with server computer systems to access the local data sources 54 residing on server computer system 52.
Information Protocols
Two common web browser software programs on the market today are Microsoft Corporation's "Internet Explorer" and Netscape Communications Corporation's "Navigator."A "web server" program is a software program installed and running on server computer system 52 that supports the HTTP information protocol. For example, Microsoft and Netscape produce web server programs to run on server computer systems interfacing with web browsers. A server computer system that is connected to the Internet 50 and is running a web server software program is generally referred to as a "web server" system or "HTTP daemon." The HTTP information protocol defines how the web browser client computer systems 42-48 (or "web browsers") send requests to the web server computer system 52 (or "web server") and how the web server program 64 replies to the requests. The details of the communication protocols and the operation of the Internet 50 or WWW are well known to those skilled in the art. Similar to the computer network of FIG. 1, the web server 52 may allow web browser clients 42-48 access to data sources or applications present on web server 52 or to data sources or applications across the network 50.
URL--Uniform Resource Locator
Different types or formats of information may be communicated on the Internet 50. For example, an HTTP request sent by web browser 42 will identify a resource present on the web server 52 that the web browser 42 would like to access. The resource is identified by a "Uniform Resource Locator" or URL. The URL tells the web server what the resource is and where to find it. The details of URL's are well known to those skilled in the art. For the context of URL's, "resource" refers generally to a file or a file directory on a computer system.
If the URL of an HTTP request points to an HTML file (like "index.html") on the web server 52, then the contents of the HTML file are returned to the web browser 42. HTML refers to "HyperText Markup Language" data format. HTML is a coding language used to create Hypertext documents that may be viewed by web browser 42 which has the capability of interpreting HTML. HTML documents are primarily text files that don't change when viewed by the browser.
CGI--Common Gateway Interface
In contrast, if the URL points to a program or process (like "formmail.cgi"), then the web server 52 executes the program or process and returns the resulting output to the web browser 42. For example, if the URL points to a CGI program, the program is executed on web server 52, and the results are sent back to web browser 42. CGI or "Common Gateway Interface" refers to a World Wide Web Consortium (W3C) standard for interfacing external computer applications with information servers, such as HTTP or web servers 52. A plain HTML document that the web server retrieves is static, which means that it exists in a constant state (e.g., a text file that does not change). A CGI program (or application) is executed in real-time, so that it can output dynamic information. CGI applications may include programs created to query information from a database or accept data input. A simple example is a stock quoting program that uses CGI applications to query a database for a specific stock price.
CGI is a standard that is fully supported by the World Wide Web Consortium (W3C). The CGI standard is well known to those skilled in the art. Other types of information standards supported on the Internet include Java, JavaScript, ActiveX, Active Server Pages (ASP), IIOP, Fast CGI, WinCGI, web server API's (such as NSAPI and ISAPI), OLE, Corba, RDBMS Native SQL, and ASCII files, to name a few. In almost all instances, all web servers support CGI programs or applications. In fact, approximately ninety percent of all applications developed for the Internet today are developed to use CGI.
Problem--Depletion of Computing Ability
As computer users advance simply from using Web technology as a convenient means of publishing and sharing information to interactive applications, basic web server technology is quickly outgrown. As the number of concurrent web browser users supported by a web server increases, the loading on the web server also increases as the web server attempts to service and respond to the web browser requests. This increased loading on the web server computer system will eventually deplete the computing resources of the server computer system, such as available memory and CPU processing time. Excessive and increased loading of the web server computer system will increase the time it takes for a web server to process or otherwise respond to requests received from web browser clients. This results in lower availability of the data sources or program applications on the web server computer system that the web browsers are attempting to access. Moreover, the response time for a web browser request may be increased to such an extent that a response is precluded altogether, making the web server computer system inaccessible, leading to "server unavailable" error messages.
Web server loading is especially a problem for CGI applications. Each CGI request from a web browser starts a new and separate process or thread on the web server computer system, thereby using limited computer resources to process each request. For example, when one hundred web browsers are accessing CGI applications at the same time, one hundred separate processes or threads are running concurrently on web server computer system. As the number of concurrent CGI request processes increases, the web server computer system resources available to process the requests declines dramatically. For example, a typical CGI request process start-up uses between 500 kilobytes and 1 megabyte of available system memory. Further, under Windows NT, each CGI request creates a new DOS box shell for each request, again using critical system resources. As a result, the performance of a web server computer system may be severely degraded by attempting to process too many concurrent information requests.
A partial solution for web server loading problems is to off-load and distribute information requests to other server computer systems to process the requests. However, this can only create other problems is the requests are not distributed to the secondary server computer systems in a manner such that the processing load is balanced for all of the server computer systems.
Problem--Network Firewalls
Another problem with current web technology deals with computer network firewalls. A network firewall is a server computer system or software program designed to act as a protective shield, or "firewall," between a computer system or computer network and external computer systems or networks. Firewalls are designed to block unauthorized and unwanted access to a computer network. Firewalls are typically used to allow external computer systems limited access to computer systems or information resources residing on the protected side of the firewall. The details of firewalls and their operation are well known to those skilled in the art.
In addition to intranets and internets, network firewalls may be used to form a third type of computer network known as an "extranet." An extranet uses a network firewall to separate an intranet from the Internet. The firewall must be negotiated, or crossed, to allow information to be transferred between the two computer networks. In this manner, an extranet may be utilized to extend intranet services, using the Internet, securely and selectively. The use of extranets for business-to-business commerce is a rapidly expanding area in the computer network market.
Similar to the problems resulting from the web server loading discussed above, a network firewall may also be overloaded by increased information requests for external computer systems, such as web browsers. A program application communicating across a firewall with databases is not very efficient, adding firewall bottlenecks and network performance problems. In an attempt to avoid firewall overloading problems and improve security, some developers are creating applications that separately negotiate the firewall such that part of the application resides on the intranet inside the firewall and part is outside the firewall. This is an expensive and application dependent solution. Alternatively, developers are creating applications that bypass the firewall and its protections by creating a permanent and unauthenticated communication channel through the firewall to allow access to computer systems or information resources on the other side of the firewall. This is a major security issue because a computer hacker may find the "bypass" or hole created in the firewall and cause damage to the data sources or applications residing on the computer network that need to be protected.
Problem--Lack of Management Tools
Another problem with current web technology is that there are no management tools available to allow computer network administrators to effectively monitor and manage information requests received by a server computer system from external computer systems.
In today's networked, client-server environments, all kinds of things can (and do) go wrong that cause information requests to fail. For example, request failures may occur due to computer network failure, communication errors, computer system failures, program application crashes, and file access errors, just to name a few. Current management tools do not provide for recovery actions in the event a fault or error occurs during the processing of the information request.
Furthermore, current management tools do not provide for efficient distribution of information requests received by a server computer system to effect load balancing for the server computer system and the computer network.
As can be seen, a need exists in the industry to provide a system for distributing, monitoring, and managing information requests on a computer network. Further, a need exists for a system that provides efficient distribution of information requests to effect load balancing for requests received by a server computer system. In addition, a need exists for a system that provides for monitoring and fault recovery for information requests received by a server computer system. Still further, a need exists in the industry to provide a system for securely distributing, monitoring, and managing information requests across a network firewall.